#定义变量
TARGET = DevCtlMain
#存放中间文件的路径
BUILD_DIR = build
#存放源文件的文件夹
SRC_DIR = sources
#存放头文件的文件夹
INC_DIR = includes .
# KzLib依赖件
LIBKZ_DIR = /home/raii/lib-kz/comsrc
LIBKZ_C =
LIBKZ_O =
# LVGL8.2 依赖件
#	git clone --recursive https://github.com/lvgl/lv_port_linux_frame_buffer.git
#	git checkout release/v8.2
#	git submodule update --init --recursive
#	修改LV_COLOR_DEPTH为16
LVGL_DIR_NAME = lvgl
LVGL_DIR = /home/raii/lv_port_linux_frame_buffer
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk
include $(LVGL_DIR)/lvgl/lvgl.mk
LVGL_O = $(CSRCS:.c=.o) # 用于承载带绝对路径的全量.c列表，传递给编译命令
LVGL_OUTPUT = $(patsubst %.c, $(BUILD_DIR)/lvgl/%.o, $(notdir $(CSRCS))) # 实际输出至build/lvgl目录下的.o
INC_DIR += $(LVGL_DIR) $(LVGL_DIR)/lvgl $(LVGL_DIR)/lv_drivers

#源文件
SRCS = $(wildcard $(SRC_DIR)/*.c)
#目标文件（*.o）
OBJS = $(patsubst %.c, $(BUILD_DIR)/%.o, $(notdir $(SRCS)))
#头文件
DEPS = $(wildcard $(INC_DIR)/*.h)
#指定头文件的路径
CFLAGS = $(patsubst %, -I%, $(INC_DIR))
CFLAGS += -DLV_CONF_INCLUDE_SIMPLE -DLV_LVGL_H_INCLUDE_SIMPLE -DLV_USE_DEMO_WIDGETS -lm
#交叉编译
CROSS_COMPILE=aarch64-linux-gnu-

#目标文件
$(BUILD_DIR)/$(TARGET): $(OBJS) $(LIBKZ_O) $(LVGL_O)
	$(CROSS_COMPILE)gcc -static -o $@ $(OBJS) $(LIBKZ_O) $(LVGL_OUTPUT) $(CFLAGS)
	ln -sf $(BUILD_DIR)/$(TARGET) $(TARGET)

#*.o文件的生成规则
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(DEPS)
	@mkdir -p $(BUILD_DIR)
	$(CROSS_COMPILE)gcc -c -o $@ $< $(CFLAGS)

$(LIBKZ_O): $(LIBKZ_C)
	$(CROSS_COMPILE)gcc -c -o $(LIBKZ_O) $(LIBKZ_C) $(CFLAGS)

%.o: %.c
	@mkdir -p $(BUILD_DIR)/lvgl
	@echo "CC $<"
	@$(CROSS_COMPILE)gcc $(CFLAGS) -c $< -o $(patsubst %.c, $(BUILD_DIR)/lvgl/%.o, $(notdir $<))

#伪目标
.PHONY: clean cleanall run

#删除输出文件夹
clean:
	rm -rf $(BUILD_DIR)

#全部删除
cleanall:
	rm -rf $(BUILD_DIR)

run:
	scp ./DevCtlMain 192.168.1.115:
	ssh -t 192.168.1.115 "echo \"190201\" | sudo -S  sudo ./DevCtlMain"